// CommonJS规范规定，每个模块内部，module变量代表当前模块。这个变量是一个对象，它的exports属性（即module.exports）是对外的接口。加载某个模块，其实是加载该模块的module.exports属性。

// const a  = 'commonjs ModuleA.a'

// const funA =  function () {
//     console.log('this is  ModuleA.funA ');
// }


// const str = 'commonjs ModuleA.str'

// const str2 = 'commonjs ModuleA.str2' // 未导出的变量或者方法 不能被本文件以外的任何文件读取

// // 导出方式一  
// // 在 module 对象的export 属性上直接导出 模块内定义的任何变量 => 在main.js 中引入 用node执行进行验证
// module.exports.funA = funA
// module.exports.a = a

// // 导出方式二
// // 为了方便，Node为每个模块提供一个exports变量，指向module.exports。这等同在每个模块头部，有一行这样的命令。 

// exports.str = str

// 注意，不能直接将exports变量指向一个值，因为这样等于切断了exports与module.exports的联系。 
exports = function add ( a , b) {
    console.log('commonjs 中模块A 的add 方法');
    return a + b
}
// 因为exports不再指向module.exports了。 所以没有导出任何东西

// 总之  第二种方法很容易混淆 不建议使用  默认就用第一种就行了